contents

쿠버네티스(Kubernetes) 는(흔히 K8s로 줄여 부름) 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다. 원래 구글에서 개발했으며, 현재는 CNCF(Cloud Native Computing Foundation)에서 유지보수를 담당하고 있습니다.

쿠버네티스를 마치 여러 서버를 하나의 통일된 컴퓨터처럼 관리하는 클라우드 환경의 운영체제라고 생각할 수 있습니다.


쿠버네티스가 해결하는 문제

쿠버네티스를 이해하려면 먼저 애플리케이션 배포 방식의 진화를 알아야 합니다.

  1. 전통적인 시대: 애플리케이션을 물리 서버에서 직접 실행했습니다. 애플리케이션을 격리할 방법이 없어 리소스 할당 문제가 발생했습니다(하나의 앱이 모든 리소스를 사용해 다른 앱을 다운시킬 수 있었습니다).

  2. 가상화 시대: 가상 머신(VM)이 격리 문제를 해결했습니다. 하나의 물리 서버에서 각자 완전한 운영체제를 갖춘 여러 개의 VM을 실행할 수 있었습니다. 하지만 VM은 완전한 OS를 포함하기 때문에 무겁고 오버헤드가 컸습니다.

  3. 컨테이너 시대: 컨테이너는 경량화된 해결책을 제공합니다. 호스트 OS 커널을 공유하며 프로세스 수준에서 애플리케이션을 격리합니다. 이 덕분에 생성 속도가 빠르고, 이식성이 높으며, 효율적입니다.

하지만 실제 애플리케이션을 위해 수백, 수천 개의 컨테이너를 사용하기 시작하면 새로운 문제에 직면하게 됩니다.

이것이 바로 컨테이너 오케스트레이션의 문제이며, 쿠버네티스는 이 문제에 대한 선도적인 해결책입니다.


쿠버네티스 아키텍처: 두뇌와 근육 🧠💪

쿠버네티스 클러스터는 크게 두 부분으로 나뉩니다: 컨트롤 플레인(Control Plane)(두뇌)과 워커 노드(Worker Nodes)(근육)입니다.

비유: 거대한 화물선을 상상해 보세요. 컨트롤 플레인은 선장과 항해사들이 결정을 내리는 '함선의 함교'입니다. 워커 노드는 선원들이 화물을 옮기는(컨테이너를 실행하는) 작업을 수행하는 '화물칸과 엔진실'입니다.

컨트롤 플레인 (두뇌)

컨트롤 플레인의 역할은 클러스터를 관리하는 것입니다. 스케줄링과 같은 전역적인 결정을 내리고, 클러스터 이벤트를 감지하고 대응합니다. 여러 핵심 구성 요소로 이루어져 있습니다.

워커 노드 (근육)

워커 노드는 애플리케이션이 실제로 실행되는 머신(VM 또는 물리 서버)입니다. 각 노드는 컨트롤 플레인에 의해 관리되며, 컨테이너를 실행하는 데 필요한 서비스들을 포함합니다.


쿠버네티스의 핵심 객체: 빌딩 블록

쿠버네티스에서는 컨테이너를 직접 다루는 대신, 추상적인 "객체(object)"를 다룹니다. 이 객체들은 보통 YAML 파일로 정의하며, 쿠버네티스는 이 객체들을 현실로 만드는 작업을 합니다.


작동 방식: 간단한 워크플로우

  1. 컨테이너 이미지와 원하는 복제본 수(예: 3개)를 명시한 디플로이먼트 YAML 파일을 작성합니다.

  2. CLI 도구인 kubectl apply -f your-app.yaml 명령어로 이 파일을 API 서버에 전송합니다.

  3. API 서버는 이 설정을 etcd에 기록합니다.

  4. 컨트롤러 매니저는 새로운 디플로이먼트를 보고, 원하는 상태를 만족시키기 위해 파드 3개를 생성합니다.

  5. 스케줄러는 아직 노드에 할당되지 않은 3개의 새 파드를 보고, 각 파드에 적합한 워커 노드를 찾아 할당합니다.

  6. 할당된 각 워커 노드의 Kubelet은 자신에게 새 파드가 할당된 것을 확인하고, 컨테이너 런타임에게 지정된 컨테이너 이미지를 가져와 컨테이너를 실행하라고 지시합니다.

  7. 미리 정의해 둔 서비스는 레이블을 기반으로 이 새로운 파드들을 자동으로 찾아 트래픽을 보내기 시작합니다.

  8. 이제 시스템은 원하는 상태에 도달했습니다. 컨트롤러 매니저는 시스템을 지속적으로 모니터링하며, 만약 파드가 다운되면 자동으로 대체 파드를 생성합니다.


쿠버네티스의 장점

단점

결론적으로, 쿠버네티스는 컨테이너화된 애플리케이션을 대규모로 관리하기 위한 사실상의 표준이 되었으며, 현대적인 클라우드 네이티브 개발을 위한 견고하고 복원력 있는 플랫폼을 제공합니다.

references